//字典转换code转换Name 
function typeToName(value,jsonData){
	var text = value;
	for (var i = 0; i < jsonData.length; i++) {
		if(value == jsonData[i].id){
			text =  jsonData[i].text;
			return text;
		}
	}
	return text;
}

/**
 * web应用根路径
 */
var $WEB_ROOT_PATH = getContextPath();

/**
 * 设置jQuery以传统方式解析提交的数据
 */
jQuery.ajaxSettings.traditional = true;

/**
 * 换行符
 */
var CRLF = "\n";

/**
 * JS加载记录MAP
 */
var INCLUDE_JS_MAP = new Object();

/**
 * CSS加载记录MAP
 */
var INCLUDE_CSS_MAP = new Object();

/**
 * JS缓存
 */
var INCLUDE_CACHE = true;

/**
 * bodyElement
 */
var _bodyElement = document.body || document.documentElement;

/**
 * loading timer
 */
var _timerLoading;
function _showBodyElement() {
	$(_bodyElement).removeClass("body-mask");
	if(''===$CommonUI._styleBodyElement) {
		$(_bodyElement).removeAttr('style');
	} else {
		$(_bodyElement).attr('style', $CommonUI._styleBodyElement);
	}
	if(''===$(_bodyElement).attr('class'))
		$(_bodyElement).removeAttr('class');
	setTimeout(function(){$(_bodyElement).css('visibility', 'visible');},0);
}

/**
 * 为string添加startWith方法
 * @param str
 * @returns
 */
String.prototype.startWith = function(str){
	var regexp = eval("/^" + str + "/");
	return regexp.test(this);
};

/**
 * 日期域
 * @param field 域（年、月、日、时、分、秒）
 * @param fieldValue
 * @class
 */
function DateField(field, fieldValue){
	this.field = field;//域（年、月、日、时、分、秒）
	this.fieldValue = fieldValue;//域值

	this.toString = function(){
		return "field=" + this.field + ", fieldValue=" + this.fieldValue;
	};
}

/**
 * 年
 */
DateField.prototype.YEAR = "Y";

/**
 * 月
 */
DateField.prototype.MONTH = "M";

/**
 * 日
 */
DateField.prototype.DATE = "D";

/**
 * 时
 */
DateField.prototype.HOUR = "H";

/**
 * 分
 */
DateField.prototype.MINUTE = "MIN";

/**
 * 秒
 */
DateField.prototype.SECOND = "S";

/**
 * 获取日期
 * @param expr 表达式（可以是字符串（日期表达式）、数字（毫秒值）、或者Date）
 * @param delimiter （仅当expr为字符串时此参数生效）
 * @returns Date
 */
function getDate(expr, delimiter){
	var result = null;
	if(null != expr){
		if(typeof(expr)== "string"){
			var _delimiter = "-";
			if(delimiter){
				_delimiter = delimiter;
			}
			var arr = expr.split(_delimiter);
			result = new Date(arr[0], (parseInt(arr[1], 10) - 1), arr[2]);
		}else if(expr instanceof Date){
			result = expr;
		}else if(!isNaN(expr)){
			result = new Date(expr);
		}
	}

	return result;
}

/**
 * 日期加减
 * @param date 要加减的日期 
 * @param field 要加减的域（年、月、日、时、分、秒，参考DateField常量）
 * @param value 域的值
 */
function dateAdd(date, field, value){
	if(date && field && value && !isNaN(value)){
		var val;		
		if("number" == typeof(value)){
			val = value;
		}else if("string" == typeof(value)){
			val = parseInt(value);			
		}else{
			throw "dateAdd: param value should be an integer";
		}
		if(DateField.prototype.YEAR == field){
			date.setFullYear(date.getFullYear() + val);
		}else if(DateField.prototype.MONTH == field){
			date.setMonth(date.getMonth() + val);
		}else if(DateField.prototype.DATE == field){
			date.setDate(date.getDate() + val);
		}else if(DateField.prototype.HOUR == field){
			date.setHours(date.getHours() + val);
		}else if(DateField.prototype.MINUTE == field){
			date.setMinutes(date.getMinutes() + val);
		}else if(DateField.prototype.SECOND == field){
			date.setSeconds(date.getSeconds() + val);
		}
	}	
}

/**
 * 比较两个日期
 * @param date1 表达式（可以是字符串（日期表达式）、数字（毫秒值）、或者Date）
 * @param date2 表达式（可以是字符串（日期表达式）、数字（毫秒值）、或者Date）
 * @returns true: date1 > date2, false: date1 < date2, null: date1或date2不是一个有效的日期表达式
 */
function compareDate(date1, date2){
	var result = null;

	var d1 = getDate(date1);
	var d2 = getDate(date2);

	if(d1 != null && d2 != null){
		return d1.getTime() > d2.getTime();
	}
	return result;
}

/**
 * 日期相减，返回两个日期相差的天数，日期不分前后
 * @param date1 可以是字符串（yyyy-mm-dd）、数字、或Date
 * @param date2 可以是字符串（yyyy-mm-dd）、数字、或Date
 * @param delimiter 日期的分隔符，默认为“-”
 * @returns 返回两个日期相差的天数
 */
function dateDiff(date1, date2, delimiter){
	var result = null;

	var sRDate = getDate(date1, delimiter);
	var eRDate = getDate(date2, delimiter);

	if(null != sRDate && null != eRDate){
		if(sRDate.getTime() > eRDate.getTime()){
			result = (sRDate - eRDate)/(24 * 60 * 60 * 1000);
		}else{
			result = (eRDate - sRDate)/(24 * 60 * 60 * 1000);
		}
	}

	return result;
}

/**
 * 简单日期格式化
 * @param date 日期
 * @param delimiter 分隔符，可选，默认为“-”
 * @returns 返回形式如“yyyy-mm-dd”的格式
 */
function simpleDateFormat(date, delimiter){
	var result = null;
	if(null != date){
		var _delimiter = "-";
		if(delimiter){
			_delimiter = delimiter;
		}
		var month = date.getMonth() + 1;
		return date.getFullYear() + _delimiter + 
		(month > 9 ? month : "0" + month) + _delimiter + 
		(date.getDate() > 9 ? date.getDate() : "0" + date.getDate());
	}

	return result;
}

/**
 * 获得应用的根路径
 */
function getContextPath(){
	var strFullPath=window.document.location.href;
	var strPath=window.document.location.pathname;
	var pos=strFullPath.indexOf(strPath);
	var prePath=strFullPath.substring(0,pos);
	var postPath=strPath.substring(0,strPath.substr(1).indexOf('/')+1);
	var basePath = prePath;
	//if(canBeAccess(prePath + postPath)){
	basePath = prePath + postPath;
	//}
	return basePath;
}

/**
 * 比较两个日期
 * @param date1
 * @param date2
 * @returns {Number} -2:传入了为null的参数，-1:date1 < date2，0:date1 = date2，1:date1 > date2
 */
function dateCompare(date1, date2){
	var result = -2;
	if(date1 && date2){
		var d1 = getDateIntStr(date1);
		var d2 = getDateIntStr(date2);
		if(null != d1 && null != d2){
			var d1Int = parseInt(d1);
			var d2Int = parseInt(d2);

			if(d1Int > d2Int){
				result = 1;
			}else if(d1Int == d2Int){
				result = 0;
			}else{
				result = -1;
			}
		}
	}
	return result;
}

/**
 * 日期格式化
 * @see yyyy-MM-dd HH:mm:ss
 */
Date.prototype.format = function(mask) {
	var d = this;
	var zeroize = function(value, length) {
		if (!length)
			length = 2;
		value = String(value);
		for ( var i = 0, zeros = ''; i < (length - value.length); i++) {
			zeros += '0';
		}
		return zeros + value;
	};
	return mask
	.replace(
			/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g,
			function($0) {
				switch ($0) {
				case 'd':
					return d.getDate();
				case 'dd':
					return zeroize(d.getDate());
				case 'ddd':
					return [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri',
					         'Sat' ][d.getDay()];
				case 'dddd':
					return [ 'Sunday', 'Monday', 'Tuesday',
					         'Wednesday', 'Thursday', 'Friday',
					         'Saturday' ][d.getDay()];
				case 'M':
					return d.getMonth() + 1;
				case 'MM':
					return zeroize(d.getMonth() + 1);
				case 'MMM':
					return [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
					         'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ][d
					                                                    .getMonth()];
				case 'MMMM':
					return [ 'January', 'February', 'March', 'April',
					         'May', 'June', 'July', 'August',
					         'September', 'October', 'November',
					         'December' ][d.getMonth()];
				case 'yy':
					return String(d.getFullYear()).substr(2);
				case 'yyyy':
					return d.getFullYear();
				case 'h':
					return d.getHours() % 12 || 12;
				case 'hh':
					return zeroize(d.getHours() % 12 || 12);
				case 'H':
					return d.getHours();
				case 'HH':
					return zeroize(d.getHours());
				case 'm':
					return d.getMinutes();
				case 'mm':
					return zeroize(d.getMinutes());
				case 's':
					return d.getSeconds();
				case 'ss':
					return zeroize(d.getSeconds());
				case 'l':
					return zeroize(d.getMilliseconds(), 3);
				case 'L':
					var m = d.getMilliseconds();
					if (m > 99)
						m = Math.round(m / 10);
					return zeroize(m);
				case 'tt':
					return d.getHours() < 12 ? 'am' : 'pm';
				case 'TT':
					return d.getHours() < 12 ? 'AM' : 'PM';
				case 'Z':
					return d.toUTCString().match(/[A-Z]+$/);
					// Return quoted strings with the surrounding quotes removed     
				default:
					return $0.substr(1, $0.length - 2);
				}
			});
};

/**
 * 添加cookie变量
 * @param name 变量名
 * @param value 变量值
 * @param expires 过期时间（天）
 * @param path 指定可访问cookie的路径
 */
function addCookie(name, value, expires, path){
	var str = name + "=" + escape(value);
	if(expires){
		var date = new Date();
		date.setTime(date.getTime() + expires * 24 * 3600 * 1000);//expires单位为天
		str += ";expires=" + date.toGMTString();
	}
	if(path){
		str += ";path=" + path;//指定可访问cookie的路径
	}
	document.cookie = str;
}

/**
 * 获取cookie
 * @param cookie_name 变量名
 * @returns
 */
function getCookie(cookie_name){
	var value = null;
	var allcookies = document.cookie;
	var cookie_pos = allcookies.indexOf(cookie_name);
	
	if (cookie_pos != -1){		
		cookie_pos += cookie_name.length + 1;
		var cookie_end = allcookies.indexOf(";", cookie_pos);
		if (cookie_end == -1)
		{
			cookie_end = allcookies.length;
		}
		value = unescape(allcookies.substring(cookie_pos, cookie_end));
	}

	return value;
}

/**
 * 删除cookie
 * @param name 变量名
 */
function delCookie(name){//为了删除指定名称的cookie，可以将其过期时间设定为一个过去的时间
	addCookie(name, "0", -1, "/");
}
